package gormdb

type ConfigEntry struct {
	DBType   string `yaml:"dbType"` //数据库类型mysql 、sqlserver、 postgresql
	DBName   string `yaml:"dbName"` //数据库名称
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	Username string `yaml:"username"`
	Password string `yaml:"password"`
}

type moreConfigEntry struct {
	MaxIdleConns         int  `yaml:"maxIdleConns"`    //用于设置闲置的连接数
	MaxOpenConns         int  `yaml:"maxOpenConns"`    //用于设置最大打开的连接数，默认值为0表示不限制
	ConnMaxLifetime      int  `yaml:"connMaxLifetime"` //连接不活动时的最大生存时间(秒)
	RaiseErrorOnNotFound bool //查询空数据时是否报错
}

type OptFunc func(*moreConfigEntry)

func SetMaxIdleConns(maxIdleConns int) OptFunc {
	return func(entry *moreConfigEntry) {
		entry.MaxIdleConns = maxIdleConns
	}
}

func SetMaxOpenConns(maxOpenConns int) OptFunc {
	return func(entry *moreConfigEntry) {
		entry.MaxOpenConns = maxOpenConns
	}
}

func SetConnMaxLifetime(connMaxLifetime int) OptFunc {
	return func(entry *moreConfigEntry) {
		entry.ConnMaxLifetime = connMaxLifetime
	}
}

func SetRaiseErrorOnNotFound(raiseErrorOnNotFound bool) OptFunc {
	return func(entry *moreConfigEntry) {
		entry.RaiseErrorOnNotFound = raiseErrorOnNotFound
	}
}
